home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Visual Cafe Pro v1.0 / TUTORIAL.BIN / BaseTabbedPanel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-16  |  10.5 KB  |  686 lines

  1. package symantec.itools.awt;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Dimension;
  8. import java.awt.Event;
  9. import java.awt.Font;
  10. import java.awt.FontMetrics;
  11. import java.awt.Graphics;
  12. import java.awt.Insets;
  13. import java.awt.LayoutManager;
  14. import java.awt.Panel;
  15. import java.awt.Polygon;
  16. import java.awt.Rectangle;
  17. import java.util.Vector;
  18.  
  19. public abstract class BaseTabbedPanel extends Panel {
  20.    public static final int TOP = 0;
  21.    public static final int BOTTOM = 1;
  22.    public static final int ROUNDED = 0;
  23.    public static final int SQUARE = 1;
  24.    private int TF_LEFT;
  25.    private int TF_RIGHT;
  26.    private int TF_TOP;
  27.    private int TF_BOTTOM;
  28.    private int TF_BTN_HEIGHT;
  29.    private Vector vLabels;
  30.    private Vector vEnabled;
  31.    private Vector vPolys;
  32.    protected int curIndex;
  33.    private Font fReg;
  34.    private Font fSel;
  35.    private Component userPanel;
  36.    private int iTabsPosition;
  37.    private int iTabsStyle;
  38.    private int osAdjustment;
  39.    private int firstVisibleTab;
  40.    private DirectionButton dbLeft;
  41.    private DirectionButton dbRight;
  42.    private Polygon nullPoly;
  43.    private int lastWidth;
  44.    private Insets btpInsets;
  45.  
  46.    public BaseTabbedPanel() {
  47.       this(0, 0);
  48.    }
  49.  
  50.    public BaseTabbedPanel(boolean var1) {
  51.       this(var1 ? 0 : 1, var1 ? 0 : 1);
  52.    }
  53.  
  54.    public BaseTabbedPanel(int var1, int var2) {
  55.       this.TF_LEFT = 9;
  56.       this.TF_RIGHT = -9;
  57.       this.TF_TOP = 30;
  58.       this.TF_BOTTOM = -9;
  59.       this.TF_BTN_HEIGHT = 20;
  60.       this.curIndex = -1;
  61.       this.lastWidth = -1;
  62.       this.vLabels = new Vector();
  63.       this.vEnabled = new Vector();
  64.       this.vPolys = new Vector();
  65.       this.btpInsets = new Insets(0, 0, 0, 0);
  66.       this.setTabsInfo(var1, var2);
  67.       this.fReg = new Font("Helvetica", 0, 12);
  68.       this.fSel = new Font("Helvetica", 1, 12);
  69.       if (System.getProperty("os.name").startsWith("S")) {
  70.          this.osAdjustment = -1;
  71.       } else {
  72.          this.osAdjustment = 0;
  73.       }
  74.  
  75.       super.setLayout((LayoutManager)null);
  76.       this.dbLeft = new DirectionButton(0);
  77.       this.dbRight = new DirectionButton(1);
  78.       this.dbLeft.setShowFocus(false);
  79.       this.dbRight.setShowFocus(false);
  80.       this.dbLeft.shrinkTriangle(1, 1, 0, 1);
  81.       this.dbRight.shrinkTriangle(1, 1, 0, 1);
  82.       super.add(this.dbLeft, -1);
  83.       super.add(this.dbRight, -1);
  84.       this.nullPoly = new Polygon();
  85.       this.nullPoly.addPoint(0, 0);
  86.       this.nullPoly.addPoint(1, 1);
  87.       this.nullPoly.addPoint(0, 0);
  88.    }
  89.  
  90.    public void setTabsPosition(int var1) {
  91.       if (this.iTabsPosition != var1) {
  92.          this.setTabsInfo(var1, this.iTabsStyle);
  93.       }
  94.  
  95.    }
  96.  
  97.    public int getTabsPosition() {
  98.       return this.iTabsPosition;
  99.    }
  100.  
  101.    public void setTabsStyle(int var1) {
  102.       if (this.iTabsStyle != var1) {
  103.          this.setTabsInfo(this.iTabsPosition, var1);
  104.       }
  105.  
  106.    }
  107.  
  108.    public int getTabsStyle() {
  109.       return this.iTabsStyle;
  110.    }
  111.  
  112.    public void setTabsInfo(int var1, int var2) {
  113.       this.iTabsPosition = var1;
  114.       if (this.iTabsPosition == 0) {
  115.          this.iTabsStyle = 0;
  116.       } else {
  117.          this.iTabsStyle = var2;
  118.       }
  119.  
  120.       if (this.iTabsStyle == 0) {
  121.          this.TF_BTN_HEIGHT = 20;
  122.       } else {
  123.          this.TF_BTN_HEIGHT = 17;
  124.       }
  125.  
  126.       ((Component)this).repaint();
  127.    }
  128.  
  129.    public void setPanel(Component var1) {
  130.       this.removeAll();
  131.       this.userPanel = var1;
  132.       if (this.userPanel != null) {
  133.          super.add(this.userPanel, -1);
  134.          this.userPanel.requestFocus();
  135.       }
  136.  
  137.    }
  138.  
  139.    public void showPanel(Component var1) {
  140.       if (this.userPanel != null) {
  141.          this.userPanel.hide();
  142.       }
  143.  
  144.       this.userPanel = var1;
  145.       if (this.userPanel != null) {
  146.          Component[] var2 = ((Container)this).getComponents();
  147.          int var3 = var2.length;
  148.  
  149.          int var4;
  150.          for(var4 = 0; var4 < var3 && var2[var4] != this.userPanel; ++var4) {
  151.          }
  152.  
  153.          if (var4 == var3) {
  154.             super.add(this.userPanel, -1);
  155.          }
  156.  
  157.          this.userPanel.show();
  158.          this.userPanel.requestFocus();
  159.          ((Container)this).validate();
  160.          ((Component)this).repaint();
  161.       }
  162.  
  163.    }
  164.  
  165.    public int addTab(String var1, boolean var2) {
  166.       this.vLabels.addElement(var1);
  167.       this.vEnabled.addElement(new Boolean(var2));
  168.       int var3 = this.vLabels.size() - 1;
  169.       if (this.curIndex == -1 && var2) {
  170.          this.showTab(var3);
  171.       }
  172.  
  173.       return var3;
  174.    }
  175.  
  176.    public synchronized void setTab(String var1, boolean var2, int var3) {
  177.       if (var3 >= 0 && var3 < this.vLabels.size()) {
  178.          if (var3 != this.curIndex || var2) {
  179.             try {
  180.                this.vLabels.setElementAt(var1, var3);
  181.                this.vEnabled.setElementAt(new Boolean(var2), var3);
  182.                ((Component)this).repaint();
  183.             } catch (ArrayIndexOutOfBoundsException var4) {
  184.             }
  185.          }
  186.       }
  187.    }
  188.  
  189.    public synchronized void setLabel(String var1, int var2) {
  190.       if (var2 >= 0 && var2 < this.vLabels.size()) {
  191.          try {
  192.             this.vLabels.setElementAt(var1, var2);
  193.             ((Component)this).repaint();
  194.          } catch (ArrayIndexOutOfBoundsException var3) {
  195.          }
  196.       }
  197.    }
  198.  
  199.    public synchronized String getLabel(int var1) {
  200.       if (var1 >= 0 && var1 < this.vLabels.size()) {
  201.          try {
  202.             return (String)this.vLabels.elementAt(var1);
  203.          } catch (ArrayIndexOutOfBoundsException var2) {
  204.             return "";
  205.          }
  206.       } else {
  207.          return "";
  208.       }
  209.    }
  210.  
  211.    public synchronized void setEnabled(boolean var1, int var2) {
  212.       if (var2 >= 0 && var2 < this.vLabels.size()) {
  213.          if (var2 != this.curIndex || var1) {
  214.             try {
  215.                this.vEnabled.setElementAt(new Boolean(var1), var2);
  216.                ((Component)this).repaint();
  217.             } catch (ArrayIndexOutOfBoundsException var3) {
  218.             }
  219.          }
  220.       }
  221.    }
  222.  
  223.    public void showTab(int var1) {
  224.       if (var1 >= 0 && var1 < this.vLabels.size() && var1 != this.curIndex) {
  225.          if (this.tabIsEnabled(var1)) {
  226.             this.curIndex = var1;
  227.             ((Component)this).invalidate();
  228.             ((Container)this).validate();
  229.             ((Component)this).repaint();
  230.             ((Component)this).postEvent(new Event(this, 1001, (Object)null));
  231.          }
  232.  
  233.       }
  234.    }
  235.  
  236.    public boolean tabIsEnabled(int var1) {
  237.       if (var1 >= 0 && var1 < this.vLabels.size()) {
  238.          try {
  239.             Boolean var2 = (Boolean)this.vEnabled.elementAt(var1);
  240.             if (var2) {
  241.                return true;
  242.             }
  243.          } catch (ArrayIndexOutOfBoundsException var3) {
  244.          }
  245.  
  246.          return false;
  247.       } else {
  248.          return false;
  249.       }
  250.    }
  251.  
  252.    public int currentTabIndex() {
  253.       return this.curIndex;
  254.    }
  255.  
  256.    public void enableTab(boolean var1, int var2) {
  257.       if (var2 >= 0 && var2 < this.vEnabled.size() && var2 != this.curIndex) {
  258.          try {
  259.             this.vEnabled.setElementAt(new Boolean(var1), var2);
  260.             ((Component)this).repaint();
  261.          } catch (ArrayIndexOutOfBoundsException var3) {
  262.          }
  263.       }
  264.    }
  265.  
  266.    public void removeTab(int var1) {
  267.       if (var1 >= 0 && var1 < this.vEnabled.size() && var1 != this.curIndex) {
  268.          try {
  269.             this.vLabels.removeElementAt(var1);
  270.             this.vEnabled.removeElementAt(var1);
  271.             ((Component)this).repaint();
  272.          } catch (ArrayIndexOutOfBoundsException var2) {
  273.          }
  274.       }
  275.    }
  276.  
  277.    public void removeAllTabs() {
  278.       this.vLabels = new Vector();
  279.       this.vEnabled = new Vector();
  280.       this.vPolys = new Vector();
  281.       this.curIndex = -1;
  282.       this.firstVisibleTab = 0;
  283.       this.lastWidth = -1;
  284.       this.removeAll();
  285.       ((Component)this).repaint();
  286.    }
  287.  
  288.    public void layout() {
  289.       Rectangle var1 = ((Component)this).bounds();
  290.       int var2 = var1.width - this.TF_LEFT + this.TF_RIGHT;
  291.       if (var2 >= 0) {
  292.          int var3 = var1.height - this.TF_TOP + this.TF_BOTTOM;
  293.          if (var3 >= 0) {
  294.             int var4 = this.TF_LEFT;
  295.             int var5 = 0;
  296.             if (this.iTabsPosition == 0) {
  297.                var5 = this.TF_TOP;
  298.             } else {
  299.                var5 = this.TF_TOP - this.TF_BTN_HEIGHT;
  300.             }
  301.  
  302.             if (this.userPanel != null) {
  303.                this.userPanel.reshape(var4 + 3, var5 + 3, var2 - 6, var3 - 5);
  304.                this.userPanel.invalidate();
  305.                this.userPanel.validate();
  306.                if (this.userPanel instanceof Canvas || this.userPanel instanceof Panel) {
  307.                   this.userPanel.repaint();
  308.                   return;
  309.                }
  310.  
  311.                ((Component)this).repaint();
  312.             }
  313.  
  314.          }
  315.       }
  316.    }
  317.  
  318.    public synchronized void paint(Graphics var1) {
  319.       Rectangle var2 = ((Component)this).bounds();
  320.       int var3 = var2.width - this.TF_LEFT + this.TF_RIGHT;
  321.       if (var3 >= 0) {
  322.          int var4 = var2.height - this.TF_TOP + this.TF_BOTTOM;
  323.          if (var4 >= 0) {
  324.             if (var2.width > this.lastWidth) {
  325.                this.firstVisibleTab = 0;
  326.             }
  327.  
  328.             this.lastWidth = var2.width;
  329.             int var5 = this.TF_LEFT;
  330.             Color var7 = var1.getColor();
  331.             var1.setColor(((Component)this).getBackground());
  332.             var1.fillRect(0, 0, var2.width, var2.height);
  333.             int var6;
  334.             if (this.iTabsPosition == 0) {
  335.                var6 = this.TF_TOP;
  336.             } else {
  337.                var6 = this.TF_TOP - this.TF_BTN_HEIGHT;
  338.             }
  339.  
  340.             var1.setColor(Color.white);
  341.             var1.drawLine(var5, var6, var5 + var3 - 1, var6);
  342.             var1.drawLine(var5, var6, var5, var6 + var4 - 1);
  343.             var1.setColor(Color.gray);
  344.             var1.drawLine(var5 + 2, var6 + var4 - 2, var5 + var3 - 2, var6 + var4 - 2);
  345.             var1.drawLine(var5 + var3 - 2, var6 + 2, var5 + var3 - 2, var6 + var4 - 2);
  346.             var1.setColor(Color.black);
  347.             var1.drawLine(var5 + 1, var6 + var4 - 1, var5 + var3 - 1, var6 + var4 - 1);
  348.             var1.drawLine(var5 + var3 - 1, var6 + 1, var5 + var3 - 1, var6 + var4 - 1);
  349.             int var9 = this.TF_LEFT + 8;
  350.             int var12 = 0;
  351.             int var13 = this.TF_LEFT;
  352.             int var14 = this.vLabels.size();
  353.             this.vPolys.removeAllElements();
  354.             Font var16 = var1.getFont();
  355.             FontMetrics var17 = ((Component)this).getFontMetrics(this.fReg);
  356.             FontMetrics var18 = ((Component)this).getFontMetrics(this.fSel);
  357.             int var19 = 0;
  358.  
  359.             int var21;
  360.             for(var21 = 0; var21 < this.firstVisibleTab; ++var21) {
  361.                this.vPolys.addElement(this.nullPoly);
  362.             }
  363.  
  364.             if (var21 > 0) {
  365.                var13 += 2;
  366.             }
  367.  
  368.             for(; var21 < var14; ++var21) {
  369.                Polygon var20 = new Polygon();
  370.  
  371.                try {
  372.                   String var15 = (String)this.vLabels.elementAt(var21);
  373.                   if (var21 == this.curIndex) {
  374.                      var19 = var18.stringWidth(var15);
  375.                   } else {
  376.                      var19 = var17.stringWidth(var15);
  377.                   }
  378.  
  379.                   int var10;
  380.                   int var11;
  381.                   if (this.iTabsPosition == 0) {
  382.                      var10 = this.TF_TOP - this.TF_BTN_HEIGHT;
  383.                      var11 = this.TF_TOP - 1;
  384.                   } else {
  385.                      var10 = var2.height + this.TF_BOTTOM + 1;
  386.                      var11 = var2.height + this.TF_BOTTOM - this.TF_BTN_HEIGHT;
  387.                   }
  388.  
  389.                   int var8;
  390.                   if (this.iTabsStyle == 0) {
  391.                      var8 = var13 + 2;
  392.                      var9 = var8 + var19 + 13;
  393.                   } else {
  394.                      var8 = var9 - 7;
  395.                      var9 = var8 + var19 + 28;
  396.                   }
  397.  
  398.                   if (var9 + 36 - this.TF_RIGHT > var2.width) {
  399.                      break;
  400.                   }
  401.  
  402.                   if (this.iTabsPosition == 0) {
  403.                      if (var21 == this.curIndex) {
  404.                         var10 -= 3;
  405.                         var8 -= 2;
  406.                      }
  407.  
  408.                      var1.setColor(Color.white);
  409.                      if (this.curIndex == var21 + 1) {
  410.                         var1.drawLine(var8 + 2, var10, var9 - 2, var10);
  411.                      } else {
  412.                         var1.drawLine(var8 + 2, var10, var9, var10);
  413.                      }
  414.  
  415.                      if (this.curIndex != var21 - 1) {
  416.                         var1.drawLine(var8, var10 + 2, var8, var11);
  417.                         var12 = var8;
  418.                      } else {
  419.                         var12 = var8 + 1;
  420.                      }
  421.  
  422.                      var1.drawLine(var8 + 1, var10 + 1, var8 + 1, var10 + 1);
  423.                      if (this.curIndex != var21 + 1) {
  424.                         var1.setColor(Color.gray);
  425.                         var1.drawLine(var9, var10, var9, var11);
  426.                         var1.setColor(Color.black);
  427.                         var1.drawLine(var9 + 1, var10 + 2, var9 + 1, var11);
  428.                         var13 = var9;
  429.                      } else {
  430.                         var13 = var9 - 1;
  431.                      }
  432.                   } else if (this.iTabsStyle != 1) {
  433.                      if (var21 == this.curIndex) {
  434.                         var10 += 3;
  435.                         var8 -= 2;
  436.                      }
  437.  
  438.                      var1.setColor(Color.white);
  439.                      if (this.curIndex == var21 + 1) {
  440.                         var1.drawLine(var8 + 2, var10, var9 - 2, var10);
  441.                      } else {
  442.                         var1.drawLine(var8 + 2, var10, var9, var10);
  443.                      }
  444.  
  445.                      if (this.curIndex != var21 - 1) {
  446.                         var1.drawLine(var8, var10 - 2, var8, var11);
  447.                         var12 = var8;
  448.                      } else {
  449.                         var12 = var8 + 1;
  450.                      }
  451.  
  452.                      var1.drawLine(var8 + 1, var10 - 1, var8 + 1, var10 - 1);
  453.                      if (this.curIndex != var21 + 1) {
  454.                         var1.setColor(Color.gray);
  455.                         var1.drawLine(var9, var10, var9, var11);
  456.                         var1.setColor(Color.black);
  457.                         var1.drawLine(var9 + 1, var10 - 2, var9 + 1, var11);
  458.                         var13 = var9;
  459.                      } else {
  460.                         var13 = var9 - 1;
  461.                      }
  462.                   } else {
  463.                      var1.setColor(Color.gray);
  464.                      var1.drawLine(var8 + 9, var10, var9 - 9, var10);
  465.                      var1.setColor(Color.black);
  466.                      if (var21 != 0 && var21 != this.curIndex) {
  467.                         var1.drawLine(var8 + 4, var10 - 9, var8 + 9, var10);
  468.                         var20.addPoint(var8 + 9, var11);
  469.                         var20.addPoint(var8 + 4, var10 - 9);
  470.                      } else {
  471.                         var1.drawLine(var8, var11, var8 + 9, var10);
  472.                         var20.addPoint(var8, var11);
  473.                      }
  474.  
  475.                      var20.addPoint(var8 + 9, var10);
  476.                      var20.addPoint(var9 - 9, var10);
  477.                      if (var21 + 1 == this.curIndex) {
  478.                         var1.drawLine(var9 - 5, var10 - 9, var9 - 9, var10);
  479.                         var20.addPoint(var9 - 5, var10);
  480.                         var20.addPoint(var9 - 9, var11);
  481.                      } else {
  482.                         var1.drawLine(var9, var11, var9 - 9, var10);
  483.                         var20.addPoint(var9, var11);
  484.                      }
  485.  
  486.                      if (var21 != 1 && var21 != this.curIndex) {
  487.                         var20.addPoint(var8 + 9, var11);
  488.                      } else {
  489.                         var20.addPoint(var8, var11);
  490.                      }
  491.                   }
  492.  
  493.                   if (var21 == this.curIndex) {
  494.                      if (this.iTabsPosition == 0) {
  495.                         ++var11;
  496.                      } else {
  497.                         --var11;
  498.                      }
  499.  
  500.                      var1.setColor(((Component)this).getBackground());
  501.                      var1.drawLine(var8 + 1, var11, var9, var11);
  502.                      if (this.iTabsPosition == 1) {
  503.                         var1.drawLine(var8 + 1, var11 - 1, var9, var11 - 1);
  504.                      }
  505.  
  506.                      var1.setFont(this.fSel);
  507.                   } else {
  508.                      var1.setFont(this.fReg);
  509.                   }
  510.  
  511.                   if (this.iTabsStyle == 0) {
  512.                      var20.addPoint(var12, var11);
  513.                      var20.addPoint(var13, var11);
  514.                      var20.addPoint(var13, var10);
  515.                      var20.addPoint(var12, var10);
  516.                      var20.addPoint(var12, var11);
  517.                   }
  518.  
  519.                   this.vPolys.addElement(var20);
  520.                   Boolean var22 = (Boolean)this.vEnabled.elementAt(var21);
  521.                   if (var22) {
  522.                      var1.setColor(Color.black);
  523.                   } else {
  524.                      var1.setColor(Color.gray);
  525.                   }
  526.  
  527.                   if (this.iTabsPosition == 0) {
  528.                      var1.drawString(var15, var8 + 8, var10 + 15 + this.osAdjustment);
  529.                   } else if (this.iTabsStyle == 0) {
  530.                      var1.drawString(var15, var8 + 8, var10 - 6 + this.osAdjustment);
  531.                   } else {
  532.                      var1.drawString(var15, var8 + 14, var10 - 4 + this.osAdjustment);
  533.                   }
  534.                } catch (ArrayIndexOutOfBoundsException var23) {
  535.                }
  536.             }
  537.  
  538.             if (this.firstVisibleTab <= 0 && var21 >= var14) {
  539.                this.dbLeft.hide();
  540.                this.dbRight.hide();
  541.             } else {
  542.                this.dbLeft.show();
  543.                this.dbRight.show();
  544.                if (this.firstVisibleTab > 0) {
  545.                   this.dbLeft.enable();
  546.                } else {
  547.                   this.dbLeft.disable();
  548.                }
  549.  
  550.                if (var21 < var14) {
  551.                   this.dbRight.enable();
  552.                } else {
  553.                   this.dbRight.disable();
  554.                }
  555.  
  556.                if (this.iTabsPosition == 0) {
  557.                   this.dbLeft.reshape(var2.width - 33 + this.TF_RIGHT, this.TF_TOP - 16, 16, 15);
  558.                   this.dbRight.reshape(var2.width - 16 + this.TF_RIGHT, this.TF_TOP - 16, 16, 15);
  559.                } else {
  560.                   this.dbLeft.reshape(var2.width - 33 + this.TF_RIGHT, var2.height + this.TF_BOTTOM - this.TF_BTN_HEIGHT, 16, 15);
  561.                   this.dbRight.reshape(var2.width - 16 + this.TF_RIGHT, var2.height + this.TF_BOTTOM - this.TF_BTN_HEIGHT, 16, 15);
  562.                }
  563.             }
  564.  
  565.             while(var21 < var14) {
  566.                this.vPolys.addElement(this.nullPoly);
  567.                ++var21;
  568.             }
  569.  
  570.             var1.setFont(var16);
  571.             var1.setColor(var7);
  572.          }
  573.       }
  574.    }
  575.  
  576.    public boolean handleEvent(Event var1) {
  577.       switch (var1.id) {
  578.          case 501:
  579.             int var2 = this.vPolys.size();
  580.  
  581.             for(int var6 = 0; var6 < var2; ++var6) {
  582.                try {
  583.                   Polygon var3 = (Polygon)this.vPolys.elementAt(var6);
  584.                   if (var3 != this.nullPoly && var3.inside(var1.x, var1.y)) {
  585.                      this.showTab(var6);
  586.                      return true;
  587.                   }
  588.                } catch (ArrayIndexOutOfBoundsException var5) {
  589.                }
  590.             }
  591.             break;
  592.          case 1001:
  593.             if (var1.target == this.dbLeft) {
  594.                if (--this.firstVisibleTab < 0) {
  595.                   this.firstVisibleTab = 0;
  596.                } else {
  597.                   ((Component)this).repaint();
  598.                }
  599.  
  600.                return true;
  601.             }
  602.  
  603.             if (var1.target == this.dbRight) {
  604.                int var4 = this.vLabels.size();
  605.                if (++this.firstVisibleTab == var4) {
  606.                   --this.firstVisibleTab;
  607.                } else {
  608.                   ((Component)this).repaint();
  609.                }
  610.  
  611.                return true;
  612.             }
  613.       }
  614.  
  615.       return super.handleEvent(var1);
  616.    }
  617.  
  618.    public Component add(Component var1) {
  619.       return var1;
  620.    }
  621.  
  622.    public synchronized Component add(Component var1, int var2) {
  623.       return var1;
  624.    }
  625.  
  626.    public synchronized Component add(String var1, Component var2) {
  627.       return var2;
  628.    }
  629.  
  630.    public synchronized void remove(Component var1) {
  631.       if (var1 != this.dbLeft && var1 != this.dbRight) {
  632.          super.remove(var1);
  633.          if (var1 == this.userPanel) {
  634.             this.userPanel = null;
  635.          }
  636.  
  637.       }
  638.    }
  639.  
  640.    public synchronized void removeAll() {
  641.       super.removeAll();
  642.       super.add(this.dbLeft, -1);
  643.       super.add(this.dbRight, -1);
  644.       this.userPanel = null;
  645.    }
  646.  
  647.    public void setLayout(LayoutManager var1) {
  648.    }
  649.  
  650.    public Insets insets() {
  651.       this.btpInsets = super.insets();
  652.       Insets var10000 = this.btpInsets;
  653.       var10000.left += this.TF_LEFT + 3;
  654.       var10000 = this.btpInsets;
  655.       var10000.right += 6 - this.TF_RIGHT;
  656.       if (this.iTabsPosition == 0) {
  657.          var10000 = this.btpInsets;
  658.          var10000.top += this.TF_TOP + 3;
  659.          var10000 = this.btpInsets;
  660.          var10000.bottom += 5 - this.TF_BOTTOM;
  661.       } else {
  662.          var10000 = this.btpInsets;
  663.          var10000.top += this.TF_TOP - this.TF_BTN_HEIGHT + 3;
  664.          var10000 = this.btpInsets;
  665.          var10000.bottom += this.TF_BTN_HEIGHT + 5 - this.TF_BOTTOM;
  666.       }
  667.  
  668.       return this.btpInsets;
  669.    }
  670.  
  671.    public Dimension preferredSize() {
  672.       Dimension var1 = ((Component)this).size();
  673.       Dimension var2 = this.minimumSize();
  674.       return new Dimension(Math.max(var1.width, var2.width), Math.max(var1.height, var2.height));
  675.    }
  676.  
  677.    public Dimension minimumSize() {
  678.       if (this.userPanel != null) {
  679.          Dimension var1 = this.userPanel.minimumSize();
  680.          return new Dimension(var1.width + this.btpInsets.left + this.btpInsets.right, var1.height + this.btpInsets.top + this.btpInsets.bottom);
  681.       } else {
  682.          return new Dimension(100, 100);
  683.       }
  684.    }
  685. }
  686.